/// \file RenderObjectOGL.h
/// \date 2014-01-22
/// \brief concrete class in Open GL that models a render object, as mesh information, etc 

#ifndef _SNAKE_RENDER_RENDEROBJECTOGL_H__
#define _SNAKE_RENDER_RENDEROBJECTOGL_H__

// OpenGL

#include <Render/Include/RenderObject.h>

namespace Render
{

class RenderObjectOGL: public RenderObject
{
    /// \brief RendererOGL is the only one that can create, destroy and use this class 
    friend class RendererOGL;

private:
    // ========== INTERNAL METHODS ========== //
    
    /// \brief Constructor, receives the mesh info already created
    RenderObjectOGL(int m_vertexCount, int m_indexCount, unsigned int m_vertexArrayId, unsigned int m_vertexBufferId, unsigned int m_indexBufferId);
    
    /// \brief Destructor, releases the mesh
    virtual ~RenderObjectOGL(void);
    
    /// \brief return DX9Mesh structure pointer
    // LPD3DXMESH getLPD3DXMESH();
    
    // ========== ATTRIBUTES ========== //
    
    int m_vertexCount, m_indexCount;
	unsigned int m_vertexArrayId, m_vertexBufferId, m_indexBufferId;
};

};
#endif 
